/*
 * @Author: mkandy44 mkandy44@outlook.com
 * @Date: 2025-07-07 11:27:34
 * @LastEditors: mkandy44 mkandy44@outlook.com
 * @LastEditTime: 2025-07-07 13:07:56
 * @FilePath: \AML1899\src\spi.c
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */

#include "spi.h"



#define SCK  P15//位定义时钟
#define CS  P20//位定义片选(使能)  此项目可以不使用
#define SDI  P14//位定义Input
#define SDO  P14//位定义Output

/*-----函数声明-----*/


/*-----5微秒延时函数-----*/


/*-----CPHA=0;CPOL=0 模式2-----*/
/*-----SPI发送函数-----*/
/*-----上升沿发送-----*/
void SpiSend(uchar dat1)
{
    uchar i;
    for (i=0; i<8; ++i)//8bit，一位一位写
    {
        SCK = 0;
        if (dat1 & 0x80)//判断当前最高位为1还是0
        {
            SDO = 1;        
        }
        else
        {
            SDO = 0;
        }
        SCK = 1;//上升沿发送数据
        dat1 <<= 1;
        delay_us(4);        
    }
}

/*-----SPI接收函数-----*/
/*-----下降沿接收-----*/
uchar SpiReceive(void)
{
    uchar i, dat0;
    dat0 = 0x00;//dat0初始化 
    for (i=0; i<8; ++i)//8bit，一位一位读
    {
        dat0 <<= 1;
        while(SCK == 1);    
        while(SCK == 0);//等待下降沿，下降沿读取数据       
        dat0 |= SDI;         
    }
    return (dat0);//收到数据（返回值）dat0
}
